from flask import Flask,request,session,current_app,g
import config
from exts import db
from flask import views
from articleview import article_bp
from models import User,Article,Tag
app = Flask(__name__)

app.config.from_object(config) # 完成配置文件的加载

db.init_app(app)
app.register_blueprint(article_bp)
def login_required(func):
    def warpper(*args,**kwargs):
        # if not session.get("user_id"):
        #     return 'auth failure'
        return func(*args,**kwargs)
    return warpper
#普通的类视图 需要继承于 views.MethodView 可以对不同的行为执行不同的函数
#decorators 是类视图的一个属性  用来存储装饰器 每次执行这个类视图的时候 都要执行这个装饰器

class IndexView(views.MethodView):
    decorators = [login_required]
    def get(self):
        user = User(username="kongkong",password="123qwe")
        article = Article(title="空空生了个双胞胎",content="以后她孩子要是会翻墙怎么办")
        article.author = user
        tag1 = Tag(name="东京热")
        tag2 = Tag(name="武汉热")
        article.tags.append(tag1)
        article.tags.append(tag2)
        db.session.add(article)
        db.session.commit()
        return '添加成功'

    def post(self):
        return 'post'
    def patch(self):
        return 'patch'
    # add_url_rule 用来添加类视图和url的映射  如果想通过url 反转得到路由 需要通过as_view()方法
app.add_url_rule('/index/',view_func=IndexView.as_view('index'))